package br.ufpi.domain;

import java.util.Date;
import javax.persistence.Column;

import javax.persistence.Entity;
import javax.persistence.FetchType;

import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Temporal;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

@Entity
public class Resposta extends Persistente {

    @Column(columnDefinition = "text")
    private String mensagem;
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "perguntaID", insertable = true, updatable = true)
    @Fetch(FetchMode.JOIN)
    @Cascade(CascadeType.SAVE_UPDATE)
    private Pergunta pergunta;
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "usuarioID", insertable = true, updatable = true)
    @Fetch(FetchMode.JOIN)
    @Cascade(CascadeType.SAVE_UPDATE)
    private Usuario usuario;
    private int status;
    private double pontuacao;
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dataEnvio;
    @Column(columnDefinition = "text")
    private String comentario;

    public Long getRespostaID() {
        return super.getId();
    }

    public void setRespostaID(Long respostaID) {
        super.setId(respostaID);
    }

    public String getMensagem() {
        return mensagem;
    }

    public void setMensagem(String mensagem) {
        this.mensagem = mensagem;
    }

    public Pergunta getPergunta() {
        return pergunta;
    }

    public void setPergunta(Pergunta pergunta) {
        this.pergunta = pergunta;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public double getPontuacao() {
        return pontuacao;
    }

    public void setPontuacao(double pontuacao) {
        this.pontuacao = pontuacao;
    }

    public Date getDataEnvio() {
        return dataEnvio;
    }

    public void setDataEnvio(Date dataEnvio) {
        this.dataEnvio = dataEnvio;
    }

    public String getComentario() {
        return comentario;
    }

    public void setComentario(String comentario) {
        this.comentario = comentario;
    }

    @Override
    public String toString() {
        return "Resposta{" + "mensagem=" + mensagem + "pergunta=" + pergunta + "usuario=" + usuario + "status=" + status + "pontuacao=" + pontuacao + "dataEnvio=" + dataEnvio + "comentario=" + comentario + '}';
    }
}
